package jp.hoge.RSSReader;

import jp.hoge.RSSReader.R;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.app.NotificationManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnCancelListener;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class RSSReaderList extends ListActivity{
	RSSReaderSQLHelper databaseOpenHelper = null;
	SQLiteDatabase database = null;
	Cursor cursor = null;
	AlertDialog.Builder builder = null;
	AlertDialog dialog = null;

	/** Called when the activity is first created. */
    @Override
    /*
     * List - 画面生成
     * DBからのデータ取得に失敗、もしくはデータが存在しなかった場合、
     * アラートダイアログを表示してメインメニュー画面へと戻らせる
     */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
		Log.v("RSSReaderList","onCreate.");

        // DBよりデータ取得
		databaseOpenHelper = new RSSReaderSQLHelper(this);

		// 読み込み専用SQLiteDatabaseオブジェクトを取得
		database = databaseOpenHelper.getReadableDatabase();

		cursor = database.query(RSSReaderSQLHelper.TABLE_NAME, null, null, null, null, null, null);

		if(cursor != null){
			if(cursor.getCount() == 0){
				// データ取得失敗時のダイアログ表示処理
				builder = new AlertDialog.Builder(this);
				builder.setMessage(R.string.alert_data_empty_message);
				builder.setNeutralButton("OK", new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						// アラートボタン押下時、メインメニューに戻る
						finish();
					}
				});
				builder.setOnCancelListener(new OnCancelListener() {

					public void onCancel(DialogInterface dialog) {
						// 戻るボタン押下時、メインメニューに戻る
						finish();
					}
				});
				// アラートダイアログ表示
				dialog = builder.create();
				dialog.show();
			}
		}
		// DBクローズ
		if(database != null){
			// データベースから切断
			database.close();
			Log.v("RSSReaderList","Succeeded in close the database.");
		}
    }

    /*
     * List - 画面再生成
     * DBに保存したRSSフィードデータを取得してリスト表示する
     * RSS更新通知が存在する場合、ここでクリアする
     */
    @Override
	protected void onResume(){
		super.onResume();

		Log.v("RSSReaderList","onResume.");

		// RSS通知をクリア
		NotificationManager mNM;
		mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
		mNM.cancel(R.string.app_name);

        setContentView(R.layout.list);

		// 読み込み専用SQLiteDatabaseオブジェクトを取得
		database = databaseOpenHelper.getReadableDatabase();

		cursor = database.query(RSSReaderSQLHelper.TABLE_NAME, null, null, null, null, null, null);

		if(cursor != null){
			if(cursor.getCount() != 0){
				if(builder != null){
					// アラートダイアログを消去
					Log.v("RSSReaderList","AlertDialog Dismiss");
					dialog.dismiss();
				}

				startManagingCursor(cursor);
				cursor.moveToNext();

				SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this,
						R.layout.list_row,
						cursor,
						new String[] {"title"},
						new int[] {R.id.title_value});
				Log.v("RSSReaderList","new SimpleCursorAdapter OK");

				setListAdapter(cursorAdapter);
			}
		}
		// DBクローズ
		if(database != null){
			//データベースから切断
			database.close();
			Log.v("RSSReaderList","Succeeded in close the database.");
		}

    }


    /*
     * List - リストアイテムクリック時
     * 詳細画面へと遷移する
     * DBから取得したidを詳細画面に受け渡す
     *
     */
    @Override
    protected void onListItemClick(ListView listView, View view, int position, long id){
		super.onListItemClick(listView, view, position, id);

		Log.v("RSSReaderList","onListItemClick.");

		// idを詳細画面に受け渡す
    	Intent intent = new Intent(this, RSSReaderDescription.class);
    	intent.putExtra("id", id);

    	// 詳細画面に遷移
    	startActivity(intent);
    }
}
